package tp1Objetos3CensoEconomico


import com.sun.org.apache.xalan.internal.xsltc.compiler.ForEach
import scala.collection.mutable.ArrayBuffer



class Fuente {

	var nombreFuente = ""
	var listaDeEmpresas : ArrayBuffer[EmpresaConcreta] = _ //preguntar como inicializar los valores de las listas
	
	var anioFuente = 0
	
	class Fuente (nombre : String, anioActual : Integer ){
		nombreFuente = nombre
		anioFuente = anioActual
	}
	
	
	
		//a)
		def totalDeVentas {
			var resultado = 0//sacar año
			listaDeEmpresas.foreach{ e:Empresa => resultado = resultado + (e.buscarFicha(año)).montoDeVentasAnual }
		}
		//a
		def totalDeVentasConFold {  
		//	listaDeEmpresas.foldLeft(0) {(z: Int,i: Empresa) => z + i.buscarFicha(año)}
		}
		//b
		def totalDeGanancias {
			var ganancias = 0
			listaDeEmpresas.foreach{ e:Empresa => ganancias = ganancias + (e.buscarFicha(año)).montoDeGananciasAnuales}
		}
		//c
		//La cantidad de empresas cuyo total de ventas supera un parametro cuantos registros hay cuyo total
		def ventasMayorA (cantidad : Double){
			(listaDeEmpresas .filter(e => (e.buscarFicha(anioFuente )).montoDeVentasAnual > cantidad).length)
		}
		//d
		def montoGananciasMayorA (cantidad : Double){
			(listaDeEmpresas .filter(e => (e.buscarFicha(anioFuente )).montoDeGananciasAnuales  > cantidad).length)
		} 
		//e
		
		
		def tasaDeGananciaMayorA (cantidad:Double){
			listaDeEmpresas.filter(e => e.tasaDeGanancias(anioFuente ) > cantidad)
		}
		//f
		def ventasPorDepartamento(){
			
		  
		}
		
		//g) los nombres de las empresas cuyas ventas superen a un cierto valor. no tener en cuentas las empresas anonimas.
		def nombreEmpresas(cantidad : Double){
			(listaDeEmpresas .filter(e => (e.buscarFicha(anioFuente)).montoDeVentasAnual > cantidad).map(e => e.obtenerNombre))
	
		}
		//h
		//ver si hay que hacer que cada ficha conozca la fuente. o buscar otra forma de hacerlo
		
		//i) el nombre de la empresa con mayor monto de ganancias en el año. no tomar en cuenta las empresas anonimas
		def empresaConMayorGanancia(){
			listaDeEmpresas .filter(e => e.obtenerNombre != null).map(e => e.buscarFicha(anioFuente ).montoDeGananciasAnuales).max
			//obtiene las empresas concretas, luego se queda con una lista con todas las ganancias de cada empresa en un año, y de ahi se fija el max
		}
		
		
		//////ARREGLAR ESTA MAL///////////////
		//una empresa es solida, si en todos sus registros la tasa de ganancia es > 10 
		def esSolida(){
			listaDeEmpresas .filter(e => e.obtenerNombre != null).exists(e => e.tasaDeGanancias(anioFuente) < 10)
		}
		//si en al menos un registro la tasa de ganancia es > 85
		def esSospechosa(){
			listaDeEmpresas .filter(e => e.obtenerNombre != null).
		}
		////////////////////////////////////////
}

